perm filename DOC.NEW[1,VDS]1 blob sn#229608 filedate 1976-08-04 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00008 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	            INSTRUCTION SET FOR ARM SERVO PROGRAM: 27JULY76 
C00006 00003	MONITOR COMMANDS - PROGRAM EDITING
C00010 00004	MONITOR COMMANDS - INPUT/OUTPUT
C00013 00005	MOTION INSTRUCTIONS
C00019 00006			SUMMARY OF INSTRUCTION SET
C00021 00007	123456789012345678901234567890123456789012345678901234567890123456789
C00025 00008	DATA STRUCTURE FOR COMMAND INSTRUCTIONS
C00026 ENDMK
C⊗;
            INSTRUCTION SET FOR ARM SERVO PROGRAM: 27JULY76 


	For the following instructions, commas are to be used to separate
variables.  If an argument is optional, the default value will be used
if no value is given.  The names of transforms and programs can consist
of up to six characters.

MONITOR COMMANDS - DEFINING POSITIONS

   The following commands are used for defining transforms and determining
the current position of the arm.  Transforms are specified in cartesian
coordinates and Euler angles.

    Command     	       		Operation

TRANS <trans>	 	Used to specify and modify the value of transform
			<trans>.  The current value of the transform is 
			printed and any of the transform elements (X,Y,Z,O,A,T)
			can be modified by typing a new value after the
			query CHANGES?.   Values that are not to be changed
			can be omitted.   Changes are continuously asked for
			until no change in the transform is made.

HERE <trans>		Defines transform <trans> to be current arm position.
			As with TRANS, post modification of the Euler angles
			and cartesian position is permitted.

TF <trans>,X,Y,Z,O,A,T	Initializes the transform <trans> to the specified
			value.  All arguments left unspecified will be set
			to zero.  This instruction is used mainly for 
			reading in transforms that have be punched on paper
			tape.

WHERE			Prints out the current location of the arm in Euler
			and joint angles along with the current hand opening.



MONITOR COMMANDS - PROGRAM CONTROL

    Command     	       		Operation

EXEC <prog>,<nloop>	Executes the user motion program <prog>, <nloop> 
			number of times.  A loop is terminated when
			either a STOP instruction or the last defined step
			of the program is encountered.  If <nloop> is
			omitted, the program will be executed one time.
			If <prog> is omitted, execution of the last
			user program EXEC'ed will be re-initiated.

P			Proceeds motion program at the step following the
			step where execution was halted due to a PAUSE
			instruction or runtime error.
MONITOR COMMANDS - PROGRAM EDITING


   The following commands are used for creating and modifying  user motion
instruction programs.  

    Command     	       		Operation

EDIT <prog>,<nstep>	Permits user to creating or modifying program <prog> 
			starting at step <nstep>.  If no step number is
			specified editing proceeds from the step were the 
			last editing session was terminated.  If no program
			is specified, the last program edited is re-opened.

DEFPRO <prog>		Used primarily for reading user motion programs
			that have been dumped to paper tape via the PUNCHP
			instruction.  Sucessive program steps are read in
			until an empty line or illegal motion is encountered.

   Once having entered the EDIT program, the following edit functions may
be invoked.

    Command     	       		Operation

<any motion instruction>  Replaces the motion instruction stored at the 
			current step with the instruction typed in.  The 
			next step is then displayed for editing.

<cr>			Typing an empty line ( carriage return ) leaves the
			current step unaltered and displays the next 
			instruction for editing.

D <nstep>         	Deletes an arbitrary number of instructions starting
			with the current instruction step.  If nstep is not
			specified, only the current step is deleted.  

E <prog>,<nstep>	Switches EDITing from the current program to the
			new user motion program <prog> starting with
			step <nstep>.  As always, <nstep> can be omitted
			and editing will begin with the first motion
			instruction.

I			Moves instructions starting at the current step
			down one and inserts in its place any motion
			instruction that is typed in.  The process is 
			repeated until an empty line is typed.

L			Leaves the current step unaltered and displays the
			previous step for editing.

P <nstep>		Prints the next <nstep> number of program steps
			and sets the current line number equal to the
			last line printed.

S <nstep>		Leaves the current step unaltered and displays the
			instruction which is at step <nstep> in the user
			program.

T			Returns to monitor program.
MONITOR COMMANDS - INPUT/OUTPUT

   The following commands are used to get hard copies of programs and 
transforms.

    Command     	       		Operation

LISTT <t1>,....,<t8>	Types out the values of up to eight differenct
			transforms.  If no transforms are specified, the
			values of all existing transforms will be printed.

PUNCHT <t1>,...,<t8>	Practically the same as the LISTT instruction 
			except that no header is typed and the transform
			names and values are printed in "TF" format.  Also
			a series of nulls are printed before and after
			the transforms to provide some leader paper tape.

LISTP <prog>,<s1>,<s2>	Types out the user motion program <prog> from step
			<s1> to step <s2>.  If the step numbers are omitted
			the entire program will be printed.

PUNCHP <prog>,<s1>,<s2>	Same as LISTP except that leading and trailing
			blank paper tape is punched.

PROGS			Prints out the names of all defined user programs.


MONITOR COMMANDS - MISC.

    Command     	       		Operation

CLEAR			Re-initializes ARM program so that all transforms
			and user programs are deleted.  This is a totally
			destructive operation.  This function first asks 
			"Are you sure (Y,N)?" to verify that the operation
			is to be performed.

DONE			Monitor program stops, computer exits to ODT.


MOTION INSTRUCTIONS

   In the following motion instructions all distances are in inches, time
is in clock ticks (125 ticks per second), and strings can be up to one line
long.

    Command     	       		Operation

DRAW dX,dY,dZ		Moves the arm along a straight a distance of dX in
			in the X direction, dY in the Y direction and dZ in
			the Z direction.  Any distances omitted are assumed
			to be zero.  The arm configuration and orientation
			are maintained during this motion.

GO   <trans>		Moves the arm to the position and orientation specified
			by transform <trans>.  There is no path computed for
			this motion,  the hardware position servo operates in
			slew mode.  Any changes in configuration requested by
			the user are executed during the motion.

MOVE <trans>		Moves the arm to the position and orientation specified
			by transform <trans>.  Intermediate set points between
			the initial and final arm position are computed by 
			interpolating the initial and final joint angles.
			Any changes in configuration requested by the user are
			performed during the motion.

DEPART <distance>	Moves the arm hand a distance of <dist> along the
			current axis of rotation of the last joint.  Negative
			distances move the hand forward, positive distances
			move the hand back.

APPRO <trans>,<dist>	Moves the hand to the position and orientation 
			specified by <trans> offset by a distance <dist> along
			the axis of rotation of the last joint.  Positive
			distances move the hand away from the specified
			transform position, negative distances move the
			hand beyond the transform position.

READY			Moves the arm to the READY position above the work
			space.  This forces the arm into a standard
			configuration.
	
REST			Moves the arm to the REST position.  This leaves the
			arm in a safe position in case power is turned off.
			If no special speed has been set via the SPEED command,
			the arm will more to rest at half the normal speed.

OPEN <dist>		Changes the hand opening to <dist> inches.

GRASP <dist>		Closes the hand and generates an error message
			if the final hand opening is less than dist.  The 
			closing speed of the hand is set at approximately
			1 inch per second.

DRIVE <jt>,<angle>,<time>  Operates the single joint specified by the 
			parameter <jt> (1-7).  The current joint angle
			is changed by an amount <angle>.  The change in
			joint angle must be specified in degrees.  The
			duration <time> must be specified in clock ticks.

PAUSE <message>		Terminates execution of motion program and types
			a message.  Execution can be continued from this
			point by typing P.

STOP			Same as PAUSE except that motion cannot be continued.

COMMNT <string>		Comment line, a no-operation at run-time.

TYPE <message>		Types the string <message> on the teletype.

RIGHTY or LEFTY		Requests a change in arm configuration to a left
			or right shouldered arm.

ABOVE or BELOW		Requests a change in arm configuration so that the
			approach angle of the hand is from below or above
			objects.

FLIP or NOFLIP		Changes the range of operation of joint 5 to 
			plus (NOFLIP) or minus (FLIP) angles.

SPEED <percentage>	Request that the next arm motion be performed at
			a speed other than normal( = 100).  The percentage
			can range from 1 ( extremely slow ) to 32000 
			( hardware slewing mode ).

COARSE			The low tolerance feature is enabled in the
			hardware servo so that larger errors in
			the final position of the arm joints will be 
			permitted at the end of the next motion.

INTOFF			Turns off the hardware position error integration
			feature during the next motion.

INTON			Forces the hardware to integrate the position error
			throughout the next motion.
		SUMMARY OF INSTRUCTION SET

Top Level Instructions:

	TRANS <transform>
	HERE <transform>
	TF <transform>,X,Y,Z,O,A,T
	WHERE

	EXEC <program name>,<pass count>
	P

	LISTT <trans #1>, .... , <trans #8>
	PUNCHT <trans #1>, .... , <trans #8>
	LISTP <program name>,<first step>,<last step>
	PUNCHP <program name>,<first step>,<last step>
	PROGS

	CLEAR
	DONE

	DEFPRO <program name>
	EDIT <program name>,<step number>

Edit Instructions

	<any motion instruction>
	c/r
	L
	S <number of steps>
	D <number of steps>
	I
	E <program name>,<step number>
	T

Motion Instructions

	DRAW	dX,dY,dZ
	GO <transform>
	MOVE <transform>
	DEPART <distance>
	APPRO <transform>,<distance>
	READY
	REST
	DRIVE <joint>,<angle>,<time>

	OPEN <distance>
	GRASP <distance>

	COMMNT <any string>
	TYPE <any string>
	PAUSE <any string>
	STOP

	RIGHTY
	LEFTY
	ABOVE
	BELOW
	FLIP
	NOFLIP

	SPEED <percentage>
	COARSE
	INTOFF
	INTON
123456789012345678901234567890123456789012345678901234567890123456789
;DATA STRUCTURE FOR SYMBOL TABLE BLOCK

;THE FOLLOWING IS THE ORGANIZATION FOR A BLOCK CONTAINING THE SYMBOL
;FOR A TOP LEVEL COMMAND, MOTION INSTRUCTION, EDIT INSTRUCTION,
;PROGRAM, OR SUBROUTINE.
;
TYPBIT==2
NUMARG==3
SYMNME==4
FUNPTR==12
FUNARG==14
;		_________________________________________
;		|					|
;  HASH PTR  → 	|  PTR TO NEXT BLOCK IN BUCKET OR 0	|
;		|---------------------------------------|
;      		|  # OF ARGS*2    |   TYPE BITS    	|
;		|---------------------------------------|
;		|   					|
;		| - - - - - - - - - - - - - - - - - - - |
;		|   SIX ASC CHARACTERS FOR THE NAME	|
;		| - - - - - - - - - - - - - - - - - - - |
;		|   					|
;		|---------------------------------------|
;		|    PTR TO SUBR TO PERFORM FUNCTION    |
;		|---------------------------------------|
;		|     8 FOUR BIT CODES SPECIFYING	|
;		| - - - - - - - - - - - - - - - - - - - |
;		|   	TYPES OF ARGUMENTS		|
;		|_______________________________________|
;
;THE TYPE BITS SPECIFY THE TYPE OF FUNCTION ASSOCIATED WITH THE 
;SYMBOL DATA BLOCK AND ARE DEFINED AS FOLLOWS:

COMMND==1	;TOP LEVEL MONITOR COMMAND
MOTION==2	;MOTION INSTRUCTION
EDITIN==4	;EDIT INSTRUCTION

;THE FOUR BIT CODES SPECIFYING THE ARGUMENTS ARE INTERPRETED AS
;FOLLOWS:  IF THE LSB IS ON THE ARGUMENT IS OPTIONAL OTHER WISE
;AN ERROR WILL BE INDICATED IF NO ARGUMENT IS FOUND.  THE 3 MSB
;USED AS AN INDEX INTO THE FOLLOWING TABLE.

TRNARG==0
DISARG==2
ANGARG==4
PRGARG==6
FUNARG==10

ARGTYP:	GETTRN	;TRANSFORM
	GETDIS	;DISTANCE
	GETANG	;ANGLE
	GETPRG	;USER DEFINED PROGRAM
	GETFUN	;MOTION INSTRUCTION

;TRANSFORM SYMBOL DATA BLOCKS ARE VERY SIMILAR TO INSTRUCTION 
;EXCEPT THAT THERE TYPE BIT IS:

TRANS ==10	;TRANSFORM SYMBOL

;AND THE CONTENTS OF THE DATA BLOCK IS AS FOLLOWS:
;		_________________________________________
;		|					|
;  HASH PTR  → 	|  PTR TO NEXT BLOCK IN BUCKET OR 0	|
;		|---------------------------------------|
;      		|        0        |   TYPE BITS    	|
;		|---------------------------------------|
;		|   					|
;		| - - - - - - - - - - - - - - - - - - - |
;		|   SIX ASC CHARACTERS FOR THE NAME	|
;		| - - - - - - - - - - - - - - - - - - - |
;		|   					|
;		|---------------------------------------|
;		|      PTR TRANSFORM DATA BLOCK         |
;		|_______________________________________|
DATA STRUCTURE FOR COMMAND INSTRUCTIONS

;		_________________________________________
;		|					|
;  STEP PTR  → 	|  PTR TO NEXT STEP IN PROGRAM OR 0	|
;		|---------------------------------------|
;      		|  PTR TO SYMBOL BLOCK FOR RUN FUNC.	|
;		|---------------------------------------|
;		|   	   ARG    1			|
;		| - - - - - - - - - - - - - - - - - - - |
;		|   	       :    			|
;		| - - - - - - - - - - - - - - - - - - - |
;		|   	   ARG    N			|
;		|_______________________________________|